package com.hsm2;
//Test2就是一个普通的类
//Test3是一个泛型类

public class Test2 {

    public static void main(String[] args) {
    }
}
//<>里面是一个参数类型，但是这个参数类型目前是不确定的，相当与一个占位，
//唯一可以确定的是这是一个引用数据类型，而不是一个基本数据类型
//在属性和方法中都会用到这个数据类型，但是在实际的声明的时候不会确定，在实例化这个类型的时候才能确定
class Test3<E>{
    int age;
    String name;
    E sex;

    public void a(E e){

    }

    public void b(E[] e){

    }
}

class Test00{
    public static void main(String[] args) {
        //对Test3进行实例化
        //1. 在实例化的时候不指定泛型； 那么认为此泛型为Object类型，其实等于没有写
        Test3 t1 = new Test3();
        //虽然在继承中用了泛型，但是在非继承的情况下，那么泛型并不起作用
        t1.a("abc");
        t1.a(17);
        t1.a(9.8);
        t1.b(new String[]{"a","b","c"});

        //2. 在实例化的时候指定泛型，
        Test3<String > t2 = new Test3<>();
        t2.sex = "男";
        t2.a("男");
        t2.b(new String[]{"a","b","c"});

    }

}
